Macro FCSpring Helix Variable/fr

Other languages:

Macro FCSpring Helix Variable

Description
Cette macro crée un ressort personnalisable. Chaque tour peut modifier la configuration du ressort qui peut être enregistrée dans un fichier avec l'extension .FCSpring ou les coordonnées .FCSpringCoor.
Sont détectés : surface (direction de la face), Cylindre (rayon), Ellipse (rayon mineur), Sphère (rayon), Toroïde (rayon 1), Plan (direction), Ligne (suit la direction), Point (position du sommet XYZ).
Si aucun objet n'est détecté (pas de sélection), le ressort est créé au point XYZ 0., 0., 0.
Voir des exemples

Le fichier .zip des icônes

Version macro : 01.19
Date dernière modification : 2024/07/11
Version FreeCAD : 0.19 and bigger
Téléchargement : Icône de la barre d'outils
Auteur: Mario52
Auteur
Mario52
Téléchargement
Icône de la barre d'outils
Liens
Version Macro
01.19
Dernière modification
2024/07/11
Version(s) FreeCAD
0.19 and bigger
Raccourci clavier
None
Voir aussi
None

Description

Cette macro crée un ressort hautement personnalisable. Toute modification modifiant la configuration du ressort peut être enregistrée dans un fichier avec l'extension .FCSpring ou coordonnées .FCSpringCoor
Sont détectées : Surface (Direction de la face), Cylindre (Rayon), Ellipse (MinorRadius), Sphère (Rayon), Toroïde (Rayon1), Plan (direction), ligne (suivre la direction), point (position du sommet XYZ)
Si aucun objet n'est détecté (pas de sélection) le ressort est créé au point XYZ 0., 0., 0.

Temporary code for external macro link. Do not use this code. This code is used exclusively by Addon Manager. Link for optional manual installation: Macro


# This code is copied instead of the original macro code
# to guide the user to the online download page.
# Use it if the code of the macro is larger than 64 KB and cannot be included in the wiki
# or if the RAW code URL is somewhere else in the wiki.

from PySide import QtGui, QtCore

diag = QtGui.QMessageBox(QtGui.QMessageBox.Information,
    "Information",
    "This macro must be downloaded from this link\n"
    "\n"
    "https://gist.githubusercontent.com/mario52a/68c81c32a0727a693d3a/raw/91cbf54580d8af331f9b371f4951a40b9ef506f3/Macro_FCSpring_Helix_Variable.FCMacro" + "\n"
    "\n"
    "Quit this window to access the download page")

diag.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
diag.setWindowModality(QtCore.Qt.ApplicationModal)
diag.exec_()

import webbrowser 
webbrowser.open("https://gist.githubusercontent.com/mario52a/68c81c32a0727a693d3a/raw/91cbf54580d8af331f9b371f4951a40b9ef506f3/Macro_FCSpring_Helix_Variable.FCMacro")
<class="rawcodeurl"><a href="https://gist.githubusercontent.com/mario52a/68c81c32a0727a693d3a/raw/91cbf54580d8af331f9b371f4951a40b9ef506f3/Macro_FCSpring_Helix_Variable.FCMacro">raw code</a>


FCSpring Helix Variable

Utilisation

Cette section est utilisée pour configurer le ressort.

Détail schématique de la définition du ressort

Interface graphique

Configuration

Type de ligne

Option

Cette section s'affiche dès qu'un objet est sélectionné. le type d'objet est renseigné dans l'éditeur de texte

L'objet peut être une ligne, 2 points, cercle, arête... Un axe de la longueur du ressort est automatiquement créé.

Détection : Cylindre (radius), Sphère (rayon), Tore (rayon) , Cône (petit rayon), Cercle (rayon), Arc (rayon), Ellipse (petit rayon)

Position (0)(xx)

(0)(xx) : nombre de sélection(s), longueur de l'axe en mm x 10, est égal au nombres de points de déplacements disponibles sur la longueur de l'axe (pas de 0.1 mm)

Dimensions particulières de la spire

Commandes

Vue rapport

La fenêtre Vue rapport affiche les détails de la configuration du ressort.

Exemple de ressort

Exemple de ressort modifié :

Exemple de vue rapport

Dès que la macro est lancée, la liste de la configuration du ressort est affichée sous forme de tableau.

Ici les données du ressort affichées dans la vue rapport.

Icônes

Téléchargez les icônes et copier les dans votre répertoire de macro.

Cliquez sur l'image, dans la nouvelle fenêtre positionnez votre souris sur l'icône, clique droit et faites "Save target as ..."

Bouton pour votre barre d'outils

Bouton
Bouton

Icônes de la macro

Script

Macro_FCSpring_Helix_Variable.FCMacro

Téléchargez la macro sur Gist Macro_FCSpring_Helix_Variable

Installation

Le fichier ci-dessus est une macro sous la forme de code GitHub. Téléchargez le fichier Zip depuis GitHub, puis suivez les instructions d'installation des macros pour débutants indiquées à l'adresse installing FreeCAD macros in Ubuntu

Exemples












Liens

Discussion sur le forum Try to do a Spring

Projet

Ressort tronqué

Lissage des spires aux changements des spires : fait

Modification du diamètre à chaque spire au choix : fait

Versions

11/07/2024 version 01.19 delete "import WebGui" replaced by "import webbrowser" and optimise filter for OS Linux Mint

2023/09/01 Version 0.18c adding FreeCAD.activeDocument().recompute(None,True,True)Texte en italique "bug" fixed by Syres thanks How to draw polygonal spirals in Freecad?

2023/09/01 Version 0.18b correct (adapt) the code :

self.PB_Adapt_Radius.setStyleSheet("background-color: QPalette.Base")

to

self.PB_Adapt_Radius.setStyleSheet("QPushButton {background-color: QPalette.Base}")

2022/03/16 Version 0.18 : ajout scrollBar, possibilité docking Gauche or Droite, restauration du chrono (time.time()), mémorise le dernier FilePath

####chrono################
import time
global depart ; depart  = 0.0
global arrivee; arrivee = 0.0
def chrono(switch):    # 0=depart autre=stop
#time.strftime('%X %x %Z')#'15:44:07 12/14/19 Paris, Madrid'
    global depart
    global arrivee
    try:
        if switch == 0:
            depart = time.time()#time.clock()
            App.Console.PrintMessage("Chrono begin   : "+str(time.strftime('%X'))+"\n")
        else:
            arrivee = time.time()#time.clock()
            App.Console.PrintMessage("Chrono end     : "+str(time.strftime('%X'))+"\n")
            parcouru = ((arrivee - depart)/60.0)
            App.Console.PrintError("Time execution : "+str("%.3f" % parcouru)+" min"+"\n\n")
        return parcouru
        FreeCADGui.updateGui()    
    except Exception: None
####chrono################

2020/11/12 Version=01.17 : suppression du timer chrono !!

2020/10/18 Ver 00.16b : suppression du test FC 18 line 56, et suppression de timer chrono j'attends...

2020/05/01 Ver 00.16: fichier d'erreur de correction (sauvegarde et chargement) cause la suppression de "label_11_Name" ...

2020/04/11 Ver 01.15: layout et présentation

2019/05/03 Ver 01.14: compatible FreeCAD 0.19.16523 (Git)

2019/04/08 Ver 01.13: compatible FreeCAD 0.18.16093 (Git) /Python version: 3.6.6 /Qt version: 5.6.2

03/04/2017: ver 01.12: correction bug ligne 2314 add "global ui"

11/12/2016: ver 01.11: Ajout de position du ressort sur un objet sélectionné

10/09/2016: ver 01.10: Ajout du Bouton "Zoom" pour agrandit la fenêtre textedit

04/09/2016: ver 01.09: ajout de la fonction lissage et sauvegarde/chargement des coordonnées du ressort

16/03/2016: ver 01.08 : correction et ajout "int()" à debutAngle et finAngle (dans la section lecture du fichier)

02/03/2016: ver 01.07 : ajout d'une option reverse spring (sens horaire)

08/02/2016: ver 01.06 : correction du bug angle cause "modifyAngle = int(file.readline().rstrip('\n\r')) # 9" modifyAngle est int() pas char

07/01/2015: ver 01.05 : ajout de "Try ...Except" (données cône) pour assurer la compatibilité avec les versions précédentes.

07/01/2015: ver 01.04 : ajout de fabrication de ressort conique et modification du chemin (path) sur "UserAppData".

07/12/2014 : ver 01.03 : nouvelle version avec rayon de chaque spire modifiable.

17/11/2014: ver 1.02 : nouvelle version avec interface graphique, modification de chaque pas et rayon, sauvegarde et chargement des données sur disque.

10/11/2014 : (23h20) correction de la modification.

ligne.Placement = App.Placement(App.Vector(0.0,0.0,0.0), App.Rotation(App.Vector(0,0,1),angleTr), App.Vector(0,0,0))

10/11/2014 : modification de la ligne 44 :

a = FreeCAD.ActiveDocument.Line.Placement=App.Placement(App.Vector(0.0,0.0,0.0), App.Rotation(App.Vector(0,0,1),angleTr), App.Vector(0,0,0))

en

ligne = FreeCAD.ActiveDocument.Line.Placement=App.Placement(App.Vector(0.0,0.0,0.0), App.Rotation(App.Vector(0,0,1),angleTr), App.Vector(0,0,0))

6/11/2014 : ajout de "makeBSpline" et configuration.

Limitations

Durant les tests de balayage, certaines erreurs ont été obtenues !